開通微信免充值代金券需要接口升級,有客戶提過要求簡單了解了下流程
准備工作:微信官方下載一份支付api demo
https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1
1.需要獲取商戶沙箱密鑰,主要是代替原有的支付密鑰請求接口
獲取方法
獲取密鑰接口:https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey
我們可以直接在微信官方https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1
設置簽名請求參數,直接用《微信支付接口簽名校驗工具》生成xml
var result = HttpService.Post(@"<xml> <mch_id><![CDATA[商戶id]]></mch_id> <nonce_str><![CDATA[隨機數]]></nonce_str> <sign>AB2454DCD76053F18974D5133BB9742F</sign> </xml>", "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey", false, 6);
如果成功會返回一個密鑰 沒有成功自己檢測商戶信息是否有問題
2.修改文件Config.cs文件配置為自己的 回調地址必須為自己的不然接收不到信息
3.測試用例
下單:https://api.mch.weixin.qq.com/sandboxnew/pay/unifiedorder
訂單查詢:https://api.mch.weixin.qq.com/sandboxnew/pay/orderquery
退款:https://api.mch.weixin.qq.com/sandboxnew/pay/refund
退款查詢:https://api.mch.weixin.qq.com/sandboxnew/pay/refundquery
下載對賬單:https://api.mch.weixin.qq.com/sandboxnew/pay/downloadbill
我這用的是掃碼測試需要修改api:https://api.mch.weixin.qq.com/sandboxnew/pay/unifiedorder
可以直接在微信demo里面操作
這里面金額是需要除100后的金額,
這里APPID是沒有不用關注
3.回調
修改后直接請求成功后會直接響應到回調地址 ,返回的二維碼掃碼是‘碼已過期,請重新生成‘不用管 只看回調返回的數據
微信說明上也有這句:驗證商戶具備正確解析及識別免充值代金券字段的能力。
如下就是我請求返回的結果 已經很清楚了 字段說明參考文檔
我設置的5.52 優惠coupon_fee =1就是0.01 settlement_total_fee 551就是5.51
<xml> <openid><![CDATA[sandboxopenid]]></openid> <trade_type><![CDATA[NATIVE]]></trade_type> <coupon_fee><![CDATA[1]]></coupon_fee> <cash_fee_type><![CDATA[CNY]]></cash_fee_type> <nonce_str><![CDATA[33d94923bbb44a7284439268b62322bc]]></nonce_str> <time_end><![CDATA[20180921113430]]></time_end> <err_code_des><![CDATA[SUCCESS]]></err_code_des> <return_code><![CDATA[SUCCESS]]></return_code> <mch_id><![CDATA[1360830802]]></mch_id> <settlement_total_fee><![CDATA[551]]></settlement_total_fee> <sign><![CDATA[C25C1D28E3E0AA75868A2C97C2FBBF8A]]></sign> <cash_fee><![CDATA[551]]></cash_fee> <coupon_id_0><![CDATA[123456]]></coupon_id_0> <coupon_fee_0><![CDATA[1]]></coupon_fee_0> <coupon_type_0><![CDATA[NO_CASH]]></coupon_type_0> <is_subscribe><![CDATA[Y]]></is_subscribe> <return_msg><![CDATA[OK]]></return_msg> <fee_type><![CDATA[CNY]]></fee_type> <bank_type><![CDATA[CMC]]></bank_type> <attach><![CDATA[test1]]></attach> <device_info><![CDATA[sandbox]]></device_info> <out_trade_no><![CDATA[136083080220180921113426239]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <total_fee><![CDATA[552]]></total_fee> <appid><![CDATA[wxfe5ddf2ec8db03c3]]></appid> <coupon_count><![CDATA[1]]></coupon_count> <transaction_id><![CDATA[4301227903220180921113430575395]]></transaction_id> <err_code><![CDATA[SUCCESS]]></err_code> </xml>
其他請求同理,參考示例修改參數
注意金額不能有小數
沙箱支付金額(1)無效,請檢查需要驗收的case——需根據測試用例的金額支付,如訂單金額 5.52 元,其中 0.01 元使用免充值券,實際支付 5.51 元。
支付和退款的測試用例金額是不一樣的,請重新下單進行請求(即下兩個訂單,一個是測試用例1003的,一個是測試用例1004的)。