最近公司很忙,好久没有写博客了。今天,终于在百忙之中休息了。最近公司有个项目需要用到扫码支付。下面记录一下银联扫码支付实现1:接口地址测试接口:https://qr-test2.chinaums.com...正式接口:https://qr.chinaums.com/netpa...2:主要参数说明:1:instMid业务类型,直接填写:QRPAYDEFAULT2:mid银联业务商户ID3:msgSrc消息来源,如:WWW.TEST.COM4:msgType消息类型:扫码支付填写:bills。getQRCode5:requestTimestamp消息请求时间,格式为:yyyy-MM-ddHH:mm:ss,例如2019-10-0112:12:126:tid银联业务终端号7:billNo订单号8:billDateorder日期,格式:yyyy-MM-dd9:billDesc订单描述10:totalAmount支付总金额,单位为11:notifyUrl支付结果通知地址12:sign签名,将以上参数按a-z顺序排列,用&字符连接排序完成后,如果连接后有转义符,则去掉转义符,然后进行md5加密得到签名3:银联扫码支付示例(银联扫码支付是一个接口,这里我使用Yii框架的yiisoft/yii2-httpclient扩展来实现)示例:$mdKey='fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';$mid='898340149000005';$tid='00000001';$msgSrc='WWW.TEST.COM';$时间=时间();$requestTimestamp=date('Y-m-dH:i:s',$time);$merOrderId='3194'.date('YmdHis').mt\_rand(100000,999999);$data=\['msgSrc'=>$msgSrc,//消息来源'msgType'=>'bills.getQRCode',//消息类型'请求tTimestamp'=>$requestTimestamp,'mid'=>$mid,'tid'=>$tid,'instMid'=>'QRPAYDEFAULT','billNo'=>$merOrderId,'billDate'=>date('Y-m-d'),'billDesc'=>'ImageCollection','totalAmount'=>1,'notifyUrl'=>'http://j527ks.natappfree.cc/test-pay/back',//接受付款通知商户服务网址\];ksort($数据);重置($数据);$选项='';foreach($dataas$key=>$value){$options.=$key.'='。$值。'&';}$options=rtrim($options,'&');//有转义符,则去掉转义符if(get\_magic\_quotes\_gpc()){$options=stripslashes($options);}$sign=md5($options.$mdKey);$data\['sign'\]=$sign;$data=json\_encode($data);$client=newClient(\['baseUrl'=>'https://qr-test2.chinaums.com'\]);$response=$client->post('/netpay-route-server/api/',$data,\['Content-Type'=>'application/json'\])->send();如果($response->isOk&&$response->data\['errCode'\]=='SUCCESS'){//获取到的billQRCode参数是一个连接,使用这个连接生成二维码即可$qrcode=Yii::$app->get('二维码');//这里获取的二维码项是你配置文件中配置的二维码参数Yii::$app->response->format=Response::FORMAT\_RAW;Yii::$app->response->headers->add('Content-Type',$qrcode->getContentType());return$qrcode->setText($response->data\['billQRCode'\])//设置扫描二维码在后续显示信息中,如果是链接,则扫描二维码跳转到指定链接->写字符串();}如上,即可实现扫码支付。需要注意的是,订单号必须以源号开头,例如,我使用的测试号以3194开头
