微信免充值代金券接口升级

开通微信免充值代金券需要接口升级,有客户提过要求简单了解了下流程

 准备工作:微信官方下载一份支付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的)。

 

posted @ 2018-09-21 15:12  非同凡向  阅读(2729)  评论(0编辑  收藏  举报