找回密码
 立即注册

QQ登录

只需一步,快速开始

九易六

初级会员

16

主题

48

帖子

306

积分

初级会员

积分
306
九易六
初级会员   /  发表于:2021-8-4 10:32  /   查看:4006  /  回复:1
本帖最后由 九易六 于 2021-8-4 10:35 编辑

背景:
自建企业内部购物手机购物网站,需要调用支付宝付款接口完成订单支付

完成效果:
图片10.png

开发流程:
①获取支付宝接口授权:
操作过程可参照TimZhang老师的帖子支付宝转账功能阐述
需要获取如下5项内容之后再进行后续步骤:
      app_id;
      private_key 私钥;
      alipay_public_key 公钥;
      seller_id 商户号;
      Aop.dll文件。


②编写服务端自定义Web API:
引入Aop.dll之后,将以下代码复制到编辑区,并将相关内容替换成自己的身份信息。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using GrapeCity.Forguncy.ServerApi;
  7. using Microsoft.AspNetCore.Http;
  8. using Aop;
  9. using Aop.Api;
  10. using Aop.Api.Domain;
  11. using Aop.Api.Request;
  12. using Aop.Api.Response;

  13. namespace alipay
  14. {
  15. public class alipay : ForguncyApi
  16. {
  17. [Post]
  18. public void wapalipay()
  19. {
  20. //获取post请求的数据
  21. var form = this.Context.Request.ReadFormAsync().Result;
  22. var subject = form["subject"]; //订单主题,例如“内购21070001”
  23. var body = form["body"]; //订单描述,例如“张三”
  24. var total_amount = form["total_amount"]; //订单总金额
  25. var out_trade_no = form["out_trade_no"]; //外部订单号,建议使用时间戳

  26. //定义运行参数,并创建实例
  27. string gatewayUrl = "https://openapi.alipay.com/gateway.do";
  28. string app_id = "将这里替换成你自己的app_id";
  29. string private_key = "将这里替换成你自己的私钥";
  30. string sign_type = "RSA2";
  31. string alipay_public_key = "将这里替换成你自己的公钥";
  32. string charset = "utf-8";

  33. IAopClient client = new DefaultAopClient(gatewayUrl,app_id,private_key,"json","1.0",sign_type,alipay_public_key,charset,false);
  34. AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
  35. //request.SetReturnUrl(""); // 设置支付完成同步回调地址
  36. //request.SetNotifyUrl(""); // 设置支付完成异步通知接收地址
  37. request.BizContent = "{" +
  38. ""subject":"" + subject + ""," +
  39. ""body":"" + body + ""," +
  40. ""out_trade_no":"" + out_trade_no + ""," +
  41. ""total_amount":"" + total_amount + ""," +
  42. ""seller_id":"将这里替换成你自己的商户号"," +
  43. ""quit_url":"将这里替换成你自己的中途退出页面地址"," +
  44. ""product_code":"QUICK_WAP_PAY"," +
  45. " }";

  46. //调用支付宝接口,并返回给活字格前端页面
  47. AlipayTradeWapPayResponse response = client.pageExecute(request);
  48. this.Context.Response.WriteAsync(response.Body);
  49. }
  50. }
  51. }
复制代码



③编写页面JavaScript调用命令:
1)在页面建立4个单元格,命名为“主题、描述、金额、订单号”
2)编辑JavaScript命令,将以下代码复制到编辑区:
  1. //获取当前页面
  2. var page = Forguncy.Page;
  3. //获取页面上的单元格
  4. var cell1 = page.getCell("订单号");
  5. var cell2 = page.getCell("主题");
  6. var cell3 = page.getCell("金额");
  7. var cell4 = page.getCell("描述");
  8. //获取单元格的值
  9. var data = {
  10. out_trade_no: cell1.getValue(),
  11. subject: cell2.getValue(),
  12. total_amount: cell3.getValue(),
  13. body: cell4.getValue()
  14. };
  15. $.post('将这里替换成你自己的项目名称/customapi/alipay/wapalipay',data,function(re){
  16. document.write(re);
  17. },'text');
复制代码
注意:
JavaScript当中第15行的写法需要注意,
在本地测试时的写法为:“$.post('customapi/alipay/wapalipay',data,function(re){
在发布到服务器之前,需要修改为:“$.post('将这里替换成你自己的项目名称/customapi/alipay/wapalipay',data,function(re){

评分

参与人数 4金币 +2000 满意度 +15 收起 理由
Chelsey.Wang + 2000 赞一个!
lovert + 5
咖啡里 + 5
amtath + 5

查看全部评分

1 个回复

倒序浏览
夏雪冬阳
论坛元老   /  发表于:2021-8-6 22:23:28
沙发
太复杂了,小白一脸懵逼
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部