最近公司的小程序需要使用支付功能,我们使用的是银联业务的支付。那么如何在微信小程序中对接银联业务的微信小程序的支付呢?在这里,我记录了我在微信小程序中实现银联业务的微信小程序的支付过程。
一、接口部分:
这里需要注意的是,银联业务的小程序支付目前不支持测试号支付,仅使用形式参数实现小程序支付。
1.银联商务小程序支付接口地址:
https://qr.chinaums.com/netpay-route-server/api/2:主要参数描述:
:msgSrc
资料来源:例如万维网。TEST.COM
(2):msgType
消息类型:微信小程序的支付参数固定为wx.unifiedOrder
(3):中
商户号
(4):tid
终端号码
(5):请求时间戳
消息请求时间,格式为yyyy-mm-DD HH :mm 3360s
(6):merOrderId
订单号,请注意传递给银联商务的订单号前缀必须是来源号,例如测试号的来源号是3194,所以这里的订单号必须以3194开头。
(7):instMid
商户编号,此处固定为:MINIDEFAULT
(8):总额
订单金额,其中单位为分钟,例如一元,则此参数为100。
(9):tradeType
交易类型:这里固定为MINI
(10):签名类型
签名算法:这里有三种参数:MD5、SHA1和RSA。我这里用的是MD5。
(11):次阴茎
付费用户openid
(12):通知Url
支付结果通知地址和异步回拨地址。这里注意:付款通知地址必须是伪静态地址,比如: XXXXX/back/index,不是XXXX/index.php?r=后退/索引
(13):标志
签名,将以上参数按照a-z的顺序排序,排序后用字符连接,如果连接后有转义字符,去掉转义字符,然后进行md5加密,得到签名。
从界面微信小程序下单的简单例子如下:
$ URL=' https://QR . China ums . com/netpay-route-server/API/';$ request timestamp=date(' Y-m-d h : I :s ',time());$data=['msgSrc'='XXX ',//消息源' msgType'='wx.unifiedOrder ',//消息类型' request timestamp '=$ request timestamp,' mid'=' XXX ',' tid'=' XXX ',Merorderid'=' XXX ',' instmid'=' mini default ',' total amount'=1,' trade type'=' mini ',' signtype'=' MD5 ',' subopenid '=' XXX ',' notifyurl'=' XXX ',///获取符号参数ksort($ data);重置($ data);$ options=foreach($ data as $ key=$ value){ $ options。=$key。=' .$value。} $ options=rtrim($ options ' ');//有转义字符,则去掉转义if(get _ magic _ quotes _ GPC()){ $ options=stripes($ options);} $sign=md5($options。$ params[' MDKey ']);$ data[' sign ']=$ sign;//调用银联商务微信小程序的点餐界面$ Client=new Client();$ response=$ client-create request()-set method(' post ')//request method-setUrl($ URL)//request address-setData($ Data)//Data transfer array-set headers([' content-type '=' application/JSON '])//header-set format(client :3360 format _ JSON)//提交数据的格式-send();if(!$ response-isok){ return[' type '=' error ',' message'='付款呼叫失败'];} if($ response-data [' err code ']=' success '){ return[' type '=' success ',' message'='付款呼叫成功',' data '=$ response-data [' minipayrequest ' ],//applet } else { return[' type '=' error ',' message'='付款呼叫失败'。$ response-data[' errMsg '];}二。小程序端:
银联业务界面返回的miniPayRequest参数包含了微信小程序调用支付的所有参数,所以我们只需要看到界面中填写的数据就可以实现微信小程序支付。
//payData这里是接口返回的数据参数wx . request payment({ timestamp : payData . timestamp,nonce str3360paydata.nonce str,package:paydata.package,Sign Type : Paydata。标志类型,付款标志:付款数据。Paysign,Success :(RES)={//支付处理成功},fail: (res)={//支付处理失败}})在这里我们实现了银联业务支付在微信小程序中的对接,微信小程序中支付的交换是岗位价值转移。
可以根据你项目的具体需求来处理。这里请注意,回调结束时需要输入SUCCESS或FAILED,否则会出现此通知。