微信app支付服务端开发记录

微信APP支付服务端

调用接口需要注意事项:

1、签名:需要全部参数参加签名,空值去掉。(实际传递了什么参数需要,就根据实际参数进行签名)

2、签名参数:appid是申请支付功能的app对于的ID,key是app请求支付功能后,微信会发邮件到邮箱中,进行API安全密钥设置的,商户密钥。如

key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置

签名规范(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3

3、total_fee:金额参数需要根据实际的金额乘以100。如(金额为 1.01 实际传递金额为 101)

4、参数需要转换成xml格式进行post请求。

5、下单成功后微信返回的sign是不可以用的,需要根据app端请求微信支付的具体参数进行二次签名,二次签名后的sign才可以调用app微信端的支付。如下:

app端实际请求微信支付需要传参:

d3273a78-b875-4ef2-af60-4d86b68416ab.png

 二次签名字段:

appid=wx775ce3aaa89cf253&noncestr=maQwDx4Zj3lvVsJj&package=Sign=WXPay&partnerid=1419817202&prepayid=wx201612141017166aad40f8980843856892&tamp=1481681836&key=QSLNAIXuhPOFUemvoxGpGoBMSaSujyGC 

需要根据这些参数进行签名。

6、需要注意的是微信分为 公众开发平台(公众号之类的开发,web页面开发,jsapi,微信js,扫码支付),微信开发平台(app之类的开发,第三方登录,分享,app支付),微信商户号(用于微信支付功能)

7、微信下配置的域名必须都是备案过的。(万网备案时用阿里的云服务器,域名解析时必须用阿里的云服务器)

一、调用统一下单接口(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1)

实际请求参数如下:

<?xml version="1.0" encoding="utf-8"?>

<xml>

  <appid>wx775ce3aaa89cf253</appid>

  <mch_id>1419817202</mch_id>

  <device_info>731A1F2A-15C4-4DF7-835A-23C8C3887F88</device_info>

  <nonce_str>0A6645366761499891E3A8756E298964</nonce_str>

  <sign>F2B37E65FAFC4529A50BE750743055A0</sign>

  <sign_type>MD5</sign_type>

  <body>test</body>

  <detail>{"goods_id":"161212015111","wxpay_goods_id":"100111","goods_name":"test name","quantity":1,"price":102,"goods_category":"333","body":"iphone"}</detail>

  <attach>test</attach>

  <out_trade_no>1481683892</out_trade_no>

  <fee_type>CNY</fee_type>

  <total_fee>102</total_fee>

  <spbill_create_ip>127.0.0.1</spbill_create_ip>

  <goods_tag>WXG</goods_tag>

  <notify_url>http://xiaox.iok.la/temp/pay/notify</notify_url>

  <trade_type>APP</trade_type>

</xml>

下单成功后返回参数

<xml>

  <return_code><![CDATA[SUCCESS]]></return_code>

  <return_msg><![CDATA[OK]]></return_msg>

  <appid><![CDATA[wx775ce3aaa89cf253]]></appid>

  <mch_id><![CDATA[1419817202]]></mch_id>

  <device_info><![CDATA[731A1F2A-15C4-4DF7-835A-23C8C3887F88]]></device_info>

  <nonce_str><![CDATA[GqJnGt03ksuIi1AJ]]></nonce_str>

  <sign><![CDATA[2BC977FCC1824D73B3C9AECE307336C6]]></sign>

  <result_code><![CDATA[SUCCESS]]></result_code>

  <prepay_id><![CDATA[wx2016121411035815217a5cd50739410022]]></prepay_id>

  <trade_type><![CDATA[APP]]></trade_type>

</xml>

支付成功后提交返回的参数

<xml><appid><![CDATA[wx775ce3aaa89cf253]]></appid>

<attach><![CDATA[test]]></attach>

<bank_type><![CDATA[CFT]]></bank_type>

<cash_fee><![CDATA[102]]></cash_fee>

<device_info><![CDATA[731A1F2A-15C4-4DF7-835A-23C8C3887F88]]></device_info>

<fee_type><![CDATA[CNY]]></fee_type>

<is_subscribe><![CDATA[N]]></is_subscribe>

<mch_id><![CDATA[1419817202]]></mch_id>

<nonce_str><![CDATA[7A78C9E96695422497BD81F8A0BA5235]]></nonce_str>

<openid><![CDATA[oii8LwoUWnbeNa8RBrpMXGZSdVI4]]></openid>

<out_trade_no><![CDATA[1481681123]]></out_trade_no>

<result_code><![CDATA[SUCCESS]]></result_code>

<return_code><![CDATA[SUCCESS]]></return_code>

<sign><![CDATA[6A6B5A26DC9FD8EEE86E24F1CC184975]]></sign>

<time_end><![CDATA[20161214101030]]></time_end>

<total_fee>102</total_fee>

<trade_type><![CDATA[APP]]></trade_type>

<transaction_id><![CDATA[4010062001201612142738599626]]></transaction_id>

</xml>

应用场景

商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再在APP里面调起支付。

接口链接

URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder

是否需要证书

不需要

请求参数

字段名变量名必填类型示例值描述
应用IDappidString(32)wxd678efh567hg6787微信开放平台审核通过的应用APPID
商户号mch_idString(32)1230000109微信支付分配的商户号
设备号device_infoString(32)013467007045764终端设备号(门店号或收银设备ID),默认请传"WEB"
随机字符串nonce_strString(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法
签名signString(32)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法
签名类型sign_typeString(32)HMAC-SHA256签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
商品描述bodyString(128)腾讯充值中心-QQ会员充值

商品描述交易字段格式根据不同的应用场景按照以下格式:

APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。

商品详情detailString(8192){
"goods_detail":[
{
"goods_id":"iphone6s_16G",
"wxpay_goods_id":"1001",
"goods_name":"iPhone6s 16G",
"quantity":1,
"price":528800,
"goods_category":"123456",
"body":"苹果手机"
},
{
"goods_id":"iphone6s_32G",
"wxpay_goods_id":"1002",
"goods_name":"iPhone6s 32G",
"quantity":1,
"price":608800,
"goods_category":"123789",
"body":"苹果手机"
}
]
}

商品详细列表,使用Json格式,传输签名前请务必使用CDATA标签将JSON文本串保护起来。

goods_detail 服务商必填 []:
└ goods_id String 必填 32 商品的编号
└ wxpay_goods_id String 可选 32 微信支付定义的统一商品编号
└ goods_name String 必填 256 商品名称
└ quantity Int 必填 商品数量
└ price Int 必填 商品单价,单位为分
└ goods_category String 可选 32 商品类目ID
└ body String 可选 1000 商品描述信息

附加数据attachString(127)深圳分店附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
商户订单号out_trade_noString(32)20150806125346商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
货币类型fee_typeString(16)CNY符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
总金额total_feeInt888订单总金额,单位为分,详见支付金额
终端IPspbill_create_ipString(16)123.12.12.123用户端实际ip
交易起始时间time_startString(14)20091225091010订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
交易结束时间time_expireString(14)20091227091010

订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则

注意:最短失效时间间隔必须大于5分钟
商品标记goods_tagString(32)WXG商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
通知地址notify_urlString(256)http://www.weixin.qq.com/wxpay/pay.php接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
交易类型trade_typeString(16)APP支付类型
指定支付方式limit_payString(32)no_creditno_credit--指定不能使用信用卡支付

转载于:https://my.oschina.net/u/2321760/blog/845178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值