Wechat documentation is pretty obtuse, which is partly caused by the convoluted method of managing authorisation.
How do I wechat perform payment in Wechat mini programs?
401 Views Asked by danieltan95 At
1
There are 1 best solutions below
Related Questions in WECHAT
- Site code to enable UTF-8 to EBCDIC encoding
- Images not showing when uploaded to server
- Batch file: map a FTP server
- Checking FTP folder for filenames in HTML
- Problems uploading file within a do while loop
- C# FTP server never receives incoming transfer connection after processing EPRT command
- I get 530 access denied in ftp connection after some upgrade in my internet connection
- Need to create a simple script for ftp login
- Unable to send file from ftp to another ftp
- How to upload any file to FTP Server using Google Apps Script
Related Questions in WECHAT-MINIPROGRAM
- Site code to enable UTF-8 to EBCDIC encoding
- Images not showing when uploaded to server
- Batch file: map a FTP server
- Checking FTP folder for filenames in HTML
- Problems uploading file within a do while loop
- C# FTP server never receives incoming transfer connection after processing EPRT command
- I get 530 access denied in ftp connection after some upgrade in my internet connection
- Need to create a simple script for ftp login
- Unable to send file from ftp to another ftp
- How to upload any file to FTP Server using Google Apps Script
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This answer is meant for mini-programs. Use the chinese version of the documentation, the english versions are outdated.
First off, you'll need to prepare the following information. Note that there are two consoles involved: Wechat and Wechat Pay. These preparations will take a few days to process, so get them before you begin development on payment features.
App Id aka appid and App Secret : You can get it after your app has been submitted for approval in Wechat console.
Merchant Id aka mchid : You can get it after you have submited approval for a business account in Wechat Pay console, AND after you've linked your mini-program to your wechat pay account.
A CA certificate : Wechat Pay now uses a certificate issued by a CA, which can be generated from App Security in Wechat Pay console. It will automatically come with a
apiclient_key.pem
which is what you need, as well as a certificate serial number that you can find in the console.Allocate a HTTPS fully qualified domain name on both Wechat and Wechat Pay console. Wechat Pay console. has a rather weird behaviour where it will prompt you for sms verification but after that you need to repeat the action that prompted you to enter sms.
Now you're ready to begin. You will need a server for this because only verified and approved HTTPS fully qualified domain names that has been registered in the Wechat console can be accessed from the mini-program
Get a temporary code from
wx.login
. This code will expire if you callwx.login
again, so usewx.checkSession
to check if the session is valid before you continue.Now, make a GET request to
https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${appsecret}&js_code=${code}&grant_type=authorization_code
(https://developers.weixin.qq.com/miniprogram/en/dev/api-backend/open-api/login/auth.code2Session.html). This will return you theopenId
required for access to other items.At this point you should bind the openId to some internal id in your database.
Now you need to create a trading session. This is rather complicated (https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml and https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml). This requires a custom authorisation scheme by Weixin. If you're using NodeJS, it looks like the following:
Do note all error messages are in chinese. This will provide you with a
prepay_id
that you can finally use in your wechat application.https://developers.weixin.qq.com/miniprogram/en/dev/api/open-api/payment/wx.requestPayment.html is wrong. Do not use this. This is already outdated. Use https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_4.shtml instead. Use the same algorithm you've created in 4. to generate a signature. You need to send the randomString, timestamp, signature and prepay_id to the frontend for it to make the request using the mini program.
use wx.requestPayment and you're set.