微信扫码支付开发小结
商户根据微信支付的规则,为不同商品生成不同的二维码,展示在各种场景,用于用户扫描购买。
支付完成后会提示用户支付成功(如图6.5),商户后台得到支付成功的通知,然后进行发货处理。
开发扫码支付可分为两种模式,可根据支付场景选择相应模式。
1,生成二维码,链接中带固定参数productid(可定义为产品标识或订单号)。用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商户后台系统(需要设置支付回调URL),商户后台系统根据productid生成支付交易,最后微信支付系统发起用户支付流程。
里面也会调统一下单api.请求生成预付交易。微信返回prepay_id
二维码中的内容为链接,形式为:
weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
商户可调用第三方库生成二维码图片。
模式二与模式一相比,流程更为简单,不依赖设置的回调支付URL。
链接格式:weixin://wxpay/bizpayurl?sr=XXXXX
该模式链接较短,生成的二维码打印到结账小票上的识别率较高。
商户在微信公众平台(申请扫码支付、公众号支付)或开放平台(申请APP支付)
签名错误
可能是没排序!或是商户号没对应,再就重新设置下appkey,secret之类吧
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx6cb9a8b70]]></appid>
<mch_id><![CDATA[139602]]></mch_id>
<device_info><![CDATA[WEB]]></device_info>
<nonce_str><![CDATA[THjUklnnRNwiBifJ]]></nonce_str>
<sign><![CDATA[05586DB7DB230F674E947C380010B3]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx2017122819102945820556625982]]></prepay_id>
<trade_type><![CDATA[NATIVE]]></trade_type>
<code_url><![CDATA[weixin://wxpay/bizpayurl?pr=iZJ4quj]]></code_url>
</xml>
交易时间 | 商户订单号 | 微信支付单号 | 支付场景 | 交易状态 | 订单金额(元) |
2017-12-28 19:16:35 | 201712281521081047224627 | 4200000001201712283294032747 | 扫码支付 | 买家已支付 | 0.01 |
异步通知
<xml>
<appid><![CDATA[wx6ca8b70]]></appid>
<attach><![CDATA[eyJjb2luTniOjIsImtleSI6IkJDa0V5TDdOUmpObVJKckIifQ==]]></attach>
<bank_type><![CDATA[CMB_DEBIT]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<device_info><![CDATA[WEB]]></device_info>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<mch_id><![CDATA[1396802]]></mch_id>
<nonce_str><![CDATA[94160584]]></nonce_str>
<openid><![CDATA[odem6wK7uhyC0daUvdMBs]]></openid>
<out_trade_no><![CDATA[20121081047224627]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[777E553BB55851E093858E97CD0C4D]]></sign>
<time_end><![CDATA[20171228191636]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[NATIVE]]></trade_type>
<transaction_id><![CDATA[4200000201712283294032747]]></transaction_id>
</xml>
要返回特定格式给微信,不然微信会一直回调的。
时间宝贵,只能复制+粘贴,若图片无法显示或排版混乱,请访问https://elesos.github.io查找原文