微信小程序支付 (一、生成prepay_id) 2018-08-06

微信

1个回答

写回答

大闸倩

2026-01-15 22:10

+ 关注

微信
微信

微信公众平台: 微信公众平台 QQ.com/">https://mp.weixin.QQ.com/ 商户平台: 商户平台 https://pay.weixin.QQ.com/index.php/core/home/login 开发手册 api 是: https://pay.weixin.QQ.com/wiki/doc/api/index.html https://pay.weixin.QQ.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1 生成XML的测试接口: 测试接口 https://pay.weixin.QQ.com/wiki/tools/signverify/ 32位随机码生成器 1 配置参数, 一个都不能少(这些都是必填的,还有其他选填的参数,也可以随心情填写) appid 此小程序的唯一标识 例如:wxed9dxxx6d6cxxx9e body 可以写商品描述 例如:我是商品描述,用户买了两个馒头 mch_id 商户id 需在 商户平台 查看(申请商户平台成功就会得到) 如: 149411*2 nonce_str 随机字符串(别带小数点(没考证 感觉)) 例如:76521019851170500000 notify_url 成功后的通知地址 例如:https://bAIdu.top/callbackofpay openid 用户的唯一标识 在用户使用小程序的时候通过其 code 换取 openid 例如:obxgc5CgBbgKDrvcxxxxxJ-xxxxx out_trade_no商户订单号 例如:20180805740161 需要无重复 spbill_create_ip 终端ip(服务器的ip)貌似 127.0.0.1 就行 Total_fee 此单的交易额度(钱 money) 例如:888 单位是 分钱。及8.88元钱 ( 注意是数值型,非字符型,除此之外其他的都是字符型 ) trade_type 小程序用 'JSAPI' 其他看api 2 将以上参数(必要参数一个不能少)按照 key 字典排序,进行拼接。 例如: appid=wxedxxx2xxx6c03e9e&body=我是商品描述,用户买了两个馒头.&mch_id=149411*2&nonce_str=76521019851170500000 ...... 3 在结尾加上 商户的秘钥mch_key (需在商户平台配置 在:账户中心--账户设置--API安全--API秘钥 ,可以用 32位随机码生成器 生成) + &key= + mch_key 5 对拼接成的字符串,进行md5加密--转大写 --生成 签名 sign 例如:425F6561A654B366B5519F000CF2AE61 6 将以上参数拼成 XML

let _XMLUnifiedorder =

${myObj.appid} ${myObj.body} ${myObj.mch_id} ${myObj.nonce_str} ${myObj.notify_url} ${myObj.openid} ${myObj.out_trade_no} ${myObj.spbill_create_ip} ${myObj.Total_fee} ${myObj.trade_type} ${sign}

QQ
QQ

; 7 携带参数 post 访问https://api.mch.weixin.QQ.com/pay/unifiedorder 接口 如果正确 会成功得到 XML格式的prepay_id ,如果签名错误进行下面的错误查找。 ~~:进行错误查找 可以拿出参数在 测试接口 进行测试 ,无异常可以正常生成 XML之后,如果还报错。 试着 更改 商户平台的秘钥 (详细请看第 3 步)。貌似很多人都踩这个雷了 ...

code // 字典排序 key1=xxx&key2=zzz 拼接成字符串 function joinToStr(_obj) { let keyArr = []; for (let key in _obj) { keyArr.push(key); } keyArr = keyArr.sort(); console.log(keyArrSort---, keyArr); // paySign = MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111) = 22D9B4E54AB1950F51E0649E8810ACD6 // _str 是 paySign 中MD5 包裹的字符串部分 let _str = ; let len = keyArr.length; for (let i = 0; i len; i++) { if (i == len - 1) { _str += (keyArr[i] + = + _obj[keyArr[i]]); } else { _str += (keyArr[i] + = + _obj[keyArr[i]] + &); } } return _str; } /code

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号