网站首页 > 技术文章 正文
1.集成前需要在字节小程序中开通支付
2.开通后,需要对支付宝与微信进行配置,参考:
https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/payment/mini-app-pay-plugin-reference/application-for-payment
3.商户后端接入
(1)用户在商户侧完成商品下单;
(2)商户后端调用微信 H5 支付 统一下单接口,获取调起微信 H5 支付的 URL。即统一下单接口返回的 mweb_url 字段值(商户如果不使用微信支付方式,则可忽略该步骤);
(3)商户后端生成调用支付宝 app 支付的签名订单信息,即为调起支付宝 app 支付的参数,详见 支付宝 App 支付请求参数说明(商户如果不使用支付宝支付方式,则可忽略该步骤);
(4)商户后端对调起小程序收银台的参数 orderInfo 进行签名(参考 服务端签名),返回给商户前端;
orderInfo 进行签名:
string splicestring = this.SpliceCharacter(pay_money, order_number, goods_name);//支付宝的支付签名(参考支付宝签名文档)
int GetTimeStampadd_time = GetTimeStamp(add_time);
int GetTimeStampVal = GetTimeStamp(DateTime.Now);
var dic = new Dictionary<string, dynamic>
{
{"merchant_id", DbConfig.bytepay.MCHID}, //字节小程序收银台的商户号
{"app_id",DbConfig.bytepay.AppID}, //字节小程序收银台的AppID
{"sign_type", "MD5"},
{"timestamp", GetTimeStampVal.ToString()},//发送请求的时间戳,精确到秒
{"version", "2.0"},
{"trade_type", "H5"},
{"product_code","pay"},//
{"payment_type", "direct"},//
{"out_order_no",order_number},//商户订单号
{"uid", uid},
{"total_amount",Convert.ToInt32(pay_money*100)},//金额,整型,单位:分(不能有小数)
{"currency", "CNY"},
{"subject", goods_name},//商户订单名称
{"body", goods_name},//商户订单详情
{"trade_time", GetTimeStampadd_time.ToString()},//下单时间戳,精确到秒。如果两次支付(调用 tt.pay)传入的订单号(out_order_no)相同,则必须保证 trade_time 也相同。
{"valid_time", "7200"},//订单有效时间(单位 秒)
{"notify_url", "https://tp-pay.snssdk.com/paycallback"},
{"wx_url", "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx25161122572189727ea14cfd1832451500&package=2746219290"},//微信H5支付
{"wx_type", "MWEB"},
{"alipay_url",splicestring}, //支付宝的支付签名
};
dic.Add("sign", GetSignString(dic));
dic.Add("risk_info", "{\"ip\":\"127.0.0.1\"}");
ht.Add("code", "200");
ht.Add("message", "成功");
ht.Add("data", dic);
辅助方法:
//获取时间戳
private int GetTimeStamp(DateTime dt)
{
DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
int timeStamp = Convert.ToInt32((dt - dateStart).TotalSeconds);
return timeStamp;
}
//签名
public string GetSignString(Dictionary<string, dynamic> dic)
{
string key =DbConfig.bytepay.AppSecret;
//排序
dic = dic.OrderBy(d => d.Key).ToDictionary(d => d.Key, d => d.Value);
//连接字段
var sign = dic.Aggregate("", (current, d) => current + (d.Key + "=" + d.Value + "&"));
sign = sign.Trim('&')+ key;
//MD5
sign = Basis_vic.ToMd5(sign);
return sign;
}
猜你喜欢
- 2024-11-27 3小时 5步骤 快赢秒接手游渠道SDK
- 2024-11-27 Java服务器端模拟SDK向服务器发送数据
- 2024-11-27 Web3教程:仅仅一个周末,只用JS就可以构建出你自己的DAO(2)
- 2024-11-27 如何在 Vuejs 中使用 Supertokens 的预构建 UI
- 2024-11-27 一款建筑信息模型的BIM轻量化开发引擎
- 2024-11-27 前端对接微信公众号网页开发流程,JSSDK使用
- 2024-11-27 一文搞懂“支付核心”
- 2024-11-27 webfunny前端监控新功能分享:小程序、uni-app埋点SDK集成
- 2024-11-27 闲鱼前端如何做容灾
- 2024-11-27 用WEB技术栈开发NATIVE应用(一):WEEX SDK原理详解
你 发表评论:
欢迎- 596℃几个Oracle空值处理函数 oracle处理null值的函数
- 591℃Oracle分析函数之Lag和Lead()使用
- 578℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 574℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 571℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 564℃【数据统计分析】详解Oracle分组函数之CUBE
- 550℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 544℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)